package com.zhugang.week01;

/**
 * @program algorithms
 * @description: straight
 * @author: chanzhugang
 * @create: 2022/04/01 08:00
 */
public class Straight {

    public static void main(String[] args) {
        Straight straight = new Straight();
        int[] nums = new int[]{3, 3, 0, 4, 6};
        boolean flag = straight.isStraight(nums);
        System.out.println(flag);
    }

    /**
     * 扑克牌中顺子，随机抽5张，判断是不是连续的。 A为1，J为11，O为12，K为1，大小王为0(可以替换任何元素)
     */
    public boolean isStraight(int[] nums) {
        // 排除0的情况下，找(最大值 - 最小值) < 5, 并且不能有相同元素(用boolean[]判断是否出现过,类似与缓存)
        int max = -1;
        int min = 100;
        boolean[] dup = new boolean[14];
        for (int i = 0; i < 5; i++) {
            if (nums[i] != 0) {
                if (dup[nums[i]]) {
                    return false;
                } else {
                    dup[nums[i]] = true;
                }
                if (nums[i] < min) min = nums[i];
                if (nums[i] > max) max = nums[i];
            }
        }
        return max - min < 5;
    }
}